package com.wing.sell.model.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.core.enums.IEnum;
import com.wing.mybatis.common.BaseEntity;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.math.BigDecimal;

/**
 * 交付记录表
 *
 * @author
 */
@Data
@NoArgsConstructor
@Accessors(chain = true)
@TableName("sel_delivery_record")
public class DeliveryRecord extends BaseEntity<DeliveryRecord> implements Serializable {

    private static final long serialVersionUID = 1L;

    public enum TransportType implements IEnum<Integer> {

        /**
        * 物流运输
        */
        logistics(0,"物流运输"),
        /**
        * 快递运输
        */
        express(1,"快递运输"),
        /**
        * 自行运输
        */
        self(2,"自行运输");

        private int code;
        private String desc;

        TransportType(int code,String desc){
            this.code=code;
            this.desc=desc;
        }

        @Override
        public Integer getValue(){
            return this.code;
        }

        public String getDesc(){
            return this.desc;
        }
    }

    /**
     * 创建者
     */
    private Long creator;

    /**
     * 修改者
     */
    private Long modifier;

    /**
     * 创建人
     */
    private String creatorName;

    /**
     * 修改人
     */
    private String modifierName;

    /**
     * 发货商
     */
    private String customerName;

    /**
     * 发货商id
     */
    private String customerId;

    /**
     * 客户联系人
     */
    private String customerConcat;

    /**
     * 联系人电话
     */
    private String customerMoble;

    /**
     * 车牌号
     */
    private String carNo;

    /**
     * 物流单号
     */
    private String expressCode;

    /**
     * 物流企业id
     */
    private Long companyId;

    /**
     * 运输方式
     */
    private TransportType transportType;

    /**
    * 运输方式描述
    */
    @TableField(exist = false)
    private String transportTypeDesc;

    public String getTransportTypeDesc() {
        return transportType == null ? null : transportType.getDesc();
    }

    /**
     * 结算方式
     */
    private String transportSettlementId;

    /**
     * 运输费用
     */
    private BigDecimal transportExpenses;

    /**
     * 销售订单id
     */
    private Long saleOrderId;

    /**
     * 订单编号
     */
    private String saleOrderCode;

    /**
     * 交付记录编号
     */
    private String recordCode;

    /**
     * day
     */
    private Integer day;

    /**
     * no
     */
    private Integer no;

    /**
     * 状态：0-待签收，1-已签收
     */
    private Integer status;

    /**
     * 发货类型id
     */
    private Long typeId;

    /**
     * 出入库类型
     */
    private String typeCode;

    /**
     * 仓库id
     */
    private Long warehouseId;

    /**
     * 发货仓库类型
     */
    private Long warehouseTypeId;

}
